In video coder/decoder systems, a video encoder may code a source video sequence into a coded representation that has a smaller bit rate than does the source video and, thereby may achieve data compression. The encoder may code processed video data according to any of a variety of different coding techniques to achieve bandwidth compression. One common technique for data compression uses predictive coding techniques (e.g., temporal/motion predictive encoding). For example, some frames in a video stream may be coded independently (I-frames) and some other frames (e.g., P-frames or B-frames) may be coded using other frames as reference frames. P-frames may be coded with reference to a single previously coded frame (P-frame) and B-frames may be coded with reference to a pair of previously-coded frames, typically a frame that occurs prior to the B-frame in display order and another frame that occurs subsequently to the B-frame in display order. The resulting compressed sequence (bit stream) may be transmitted to a decoder via a channel. To recover the video data, the bit stream may be decompressed at the decoder, by inverting the coding processes performed by the encoder, yielding a received decoded video sequence. In some circumstances, the decoder may acknowledge received frames and report lost frames.
Modern coder/decoder systems often operate in processing environments in which the resources available for coding/decoding operations varies dynamically. Modern communications networks provide variable bandwidth channels to connect an encoder to a decoder. Further, processing resources available at an encoder or a decoder may be constrained by hardware limitations or power consumption objectives that limit the complexity of analytical operations that can be performed for coding or decoding operations. Accordingly, many modern coder/decoder systems employ a variety of techniques to constraint bandwidth consumption and/or conserve processing resources.
Frame Rate Adaptation (“FRA”) is one such a technique used in video coding/decoding systems to manage bandwidth and/or resource consumption within the coder/decoder system. FRA is a technique that alters the number of frames in a video sequence prior to being coded for bandwidth conservation. For example, a camera may output video data to an encoder at a predetermined frame rate (say, 30 frames per second (“fps”)) but an encoder may reduce this rate to a lower resolution (20 fps, 15 fps or 10 fps) to meet a performance constraint. Reducing the frame of the video sequence effectively reduces the data to be coded and, therefore, contributes to reduced bandwidth when the resulting video sequence is coded. Similarly, a reduced frame rate sequence also is less complex to code than a full frame rate image. When the reduced frame rate sequence is decoded, however, it generally is perceived subjectively as having lower quality than a decoded full rate sequence because the dropped frames cannot be recovered.
Video Resolution Adaptation (“VRA”) is another technique used in video coding/decoding systems to manage bandwidth and/or resource consumption within the coder/decoder system. VRA is a technique that alters the resolution (or size) of images prior to being coded for bandwidth conservation. For example, a camera may output video data to an encoder at a predetermined resolution (say, 960×720 pixels) but an encoder may reduce this resolution to a lower resolution (ex., 320×240 pixels) to meet a performance constraint. Reducing the resolution of the image effectively reduces its size for coding and, therefore, contributes to reduced bandwidth when the resulting image is coded. Similarly, a reduced resolution image also is less complex to code than a full resolution image. When the reduced resolution frame is decoded, however, it generally is perceived subjectively as having lower quality than a decoded full resolution frame because the lost frame data generally cannot be recovered.
Management of quantization parameters provides a further technique used in video coding/decoding system to manage bandwidth and/or resource consumption within the coder/decoder system. Quantization generally involves applying a quantization parameter (often, “QP”) as a divisor to transform coefficients. Quantization reduces the number of bits that must be used to represent high-energy coefficients. Quantization also can reduce many low-energy coefficients to zero, which contributes to high coding efficiency when the quantized coefficients later are entropy coded. Quantization contributes to data loss and, by extension, loss of image quality because the eliminated coefficients will not be recovered during decode operations. Thus, when applied to a common set of transform coefficients, relatively higher quantization parameters generally cause higher coding efficiency than lower quantization parameter but also generally cause lower image quality.